using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace m.Channelvn.Cached.Common
{
    public static class Common
    {
        private static string GaAccount = "MO-12366027-2";
        private static string GaPixel = "/ga.aspx";
        private static string[] mobiles = { "iphone", "opera mini", "sony", "htc", "moto", "panasonic", "sharp", "philips", "samsung", "android", "nokia", "blackberry", "galaxy" };

        public static bool isMobileBrowser()
        {
            //GETS THE CURRENT USER CONTEXT
            HttpContext context = HttpContext.Current;

            //FIRST TRY BUILT IN ASP.NT CHECK
            if (context.Request.Browser.IsMobileDevice)
            {
                return true;
            }
            //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER
            if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
            {
                return true;
            }
            //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP
            if (context.Request.ServerVariables["HTTP_ACCEPT"] != null &&
                context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
            {
                return true;
            }
            //AND FINALLY CHECK THE HTTP_USER_AGENT 
            //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING
            if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
            {
                //Create a list of all mobile types
                //string[] mobiles = { "midp", "j2me", "avant", "docomo", "novarra", "palmos", "palmsource", "240x320", "opwv", "chtml", "pda", "windows ce", "mmp/", "blackberry", "mib/", "symbian", "wireless", "nokia", "hand", "mobi", "phone", "cdm", "up.b", "audio", "SIE-", "SEC-", "samsung", "HTC", "mot-", "mitsu", "sagem", "sony", "alcatel", "lg", "eric", "erics", "ericsson", "SonyEricsson", "vx", "NEC", "philips", "mmm", "xx", "panasonic", "sharp", "wap", "sch", "rover", "pocket", "benq", "java", "pt", "pg", "vox", "amoi", "bird", "compal", "kg", "voda", "sany", "kdd", "dbt", "sendo", "sgh", "gradi", "jb", "dddi", "moto", "iphone" };

                //Loop through each item in the list created above 
                //and check if the header contains that text
                foreach (string s in mobiles)
                {
                    if (context.Request.ServerVariables["HTTP_USER_AGENT"].
                                                        ToLower().Contains(s.ToLower()))
                    {
                        return true;
                    }
                }
            }

            return false;
        }

        public static void RedirectWeb()
        {
            string isRedirect = ConfigurationManager.AppSettings["isRedirect"].ToString().Trim().ToLower();
            if (isRedirect == "true")
            {
                bool _check = Common.isMobileBrowser();
                if (_check == false)
                    m.Channelvn.Cached.UrlRewrite._301Redirection.RedirectToWeb("http://m.hongthuy.com.vn" + HttpContext.Current.Request.Url.AbsolutePath);
            }
        }

        public static string GoogleAnalyticsGetImageUrl()
        {
            System.Text.StringBuilder url = new System.Text.StringBuilder();
            url.Append(GaPixel + "?");
            url.Append("utmac=").Append(GaAccount);
            Random RandomClass = new Random();
            url.Append("&utmn=").Append(RandomClass.Next(0x7fffffff));
            string referer = "-";
            if (HttpContext.Current.Request.UrlReferrer != null
                && "" != HttpContext.Current.Request.UrlReferrer.ToString())
            {
                referer = HttpContext.Current.Request.UrlReferrer.ToString();
            }
            url.Append("&utmr=").Append(HttpUtility.UrlEncode(referer));
            if (HttpContext.Current.Request.Url != null)
            {
                url.Append("&utmp=").Append(HttpUtility.UrlEncode(HttpContext.Current.Request.Url.PathAndQuery));
            }
            url.Append("&guid=ON");
            return url.ToString().Replace("&", "&amp;");
        }
        public static bool IsIPhone()
        {
            bool isIPhone = false;

            if (HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains("iphone"))
                isIPhone = true;

            return isIPhone;
        }

        public static bool IsAndroid()
        {
            bool isAndroid = false;

            if (HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains("android"))
                isAndroid = true;

            return isAndroid;
        }
        public static bool IsWindowPhone()
        {
            bool isWP = false;

            if (HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains("windows phone") || HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains("windowsphone"))
                isWP = true;

            return isWP;
        }

        public static bool IsSmartPhone()
        {

            if (IsAndroid() || IsIPhone() || IsWindowPhone())
            {
                return true;
            }
            return false;
        }
    }
}
